﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using AcademiaInteligenteWeb.WsAcademiaInteligente;

namespace AcademiaInteligenteWeb
{
    public partial class SelectModalidadeCliente : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                AtualizarGrid();
            }
        }
        public void AtualizarGrid()
        {

            int idCliente = Convert.ToInt32(Request["id"]);
            grdModalidades.DataSource = new WsAcademiaInteligente.WsAcademiaInteligenteSoapClient().SelecionarModalidadePorAcademia(Convert.ToInt32(Session[Util.SESSION_ACADEMIA_ID]));
            grdModalidades.DataBind();
        }
        protected void btnGravar_Click(object sender, EventArgs e)
        {
            int idCliente = Convert.ToInt32(Request["id"]);
            List<Modalidade> modalidades = new WsAcademiaInteligente.WsAcademiaInteligenteSoapClient().SelecionarModalidadePorAcademia(Convert.ToInt32(Session[Util.SESSION_ACADEMIA_ID])).ToList();
            List<int> modalidadesCliente = new List<int>();
            modalidades.Where(m => m.ModalidadeHorario.Where(mh => mh.Clientes.Where(f => f.Id == idCliente).Count() > 0).Count() > 0).Select(m => m.ModalidadeHorario).ToList().ForEach(mh =>
            {
                foreach (var item in mh)
                {
                    if (item.Clientes.Where(f => f.Id == idCliente).Count() > 0)
                        modalidadesCliente.Add(item.Id);
                }
            });
            Dictionary<int, double> modalidadesSelecionados = new Dictionary<int, double>();
            foreach (string item in Request.Form)
            {
                if (item.EndsWith("selectItem"))
                {
                    modalidadesSelecionados.Add(Convert.ToInt32(Request[item]), Convert.ToDouble(Request[item.Replace("selectItem","txtValor")]));
                }
            }
            foreach (var item in modalidadesSelecionados)
            {
                Modalidade modalidade_horario;
                if ((modalidade_horario = (modalidades.Where(m => m.ModalidadeHorario.Where(mh => mh.Id == item.Key).FirstOrDefault() != null).FirstOrDefault())) != null)
                {
                    if (modalidade_horario.ModalidadeHorario.Where(mh => mh.Id == item.Key).FirstOrDefault().Clientes.Where(f => f.Id == idCliente).FirstOrDefault() == null)
                        new WsAcademiaInteligente.WsAcademiaInteligenteSoapClient().InserirClienteModalidade(idCliente, item.Key, Convert.ToInt32(Session[Util.SESSION_ACADEMIA_ID]), item.Value);
                }
                modalidadesCliente.Remove(item.Key);
            }
            foreach (var item in modalidadesCliente)
            {
                new WsAcademiaInteligente.WsAcademiaInteligenteSoapClient().RemoverClienteModalidade(idCliente, item, Convert.ToInt32(Session[Util.SESSION_ACADEMIA_ID]));
            }
            AtualizarGrid();
        }

        protected void grdModalidades_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                HtmlInputCheckBox checkbox = (HtmlInputCheckBox)e.Row.FindControl("selectItem");
                HtmlInputText txtBox = (HtmlInputText)e.Row.FindControl("txtValor");
                WsAcademiaInteligente.Modalidade_Horario modalidade = (WsAcademiaInteligente.Modalidade_Horario)e.Row.DataItem;
                int idCliente = Convert.ToInt32(Request["id"]);
                if (modalidade.Clientes != null && modalidade.Clientes.Select(f => f.Id).Contains(idCliente))
                {
                    checkbox.Checked = true;
                    txtBox.Value = modalidade.Clientes.Where(f => f.Id == idCliente).FirstOrDefault().Valor_ModalidadeHorario.ToString("n2");
                }
            }
        }
    }
}